library(pttrobo)
#> ✓ Loaded robonomistClient 2.2.1
#> ✓ Using local robonomistServer 2.5.8
library(tidyverse)
#> ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
#> ✓ ggplot2 3.3.5     ✓ purrr   0.3.4
#> ✓ tibble  3.1.6     ✓ dplyr   1.0.8
#> ✓ tidyr   1.2.0     ✓ stringr 1.4.0
#> ✓ readr   2.1.2     ✓ forcats 0.5.1
#> ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
#> x dplyr::filter() masks stats::filter()
#> x dplyr::lag()    masks stats::lag()
library(statfitools)
library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#> 
#>     date, intersect, setdiff, union

BKT Suomi

ptt_data_robo_l("StatFin/kan/ntp/statfin_ntp_pxt_132h.px") |>
  filter(
    taloustoimi == "B1GMH Bruttokansantuote markkinahintaan",
    tiedot == "Kausitasoitetun ja työpäiväkorjatun sarjan volyymin muutos vuodentakaisesta, %",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "BKT") |>
  ptt_plot(
    grouping = tiedot,
    title = "BKT Suomi",
    subtitle = "Vuosimuutos",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)
#> Loading required namespace: robonomistServer

BKT USA, euroalue, Suomi


# luodaan bkt:t usa, suomi ja euroalue. indeksoidaan, perusvuodeksi 2020.

# indeksointi apufunktio
indeksoi <- function(d, vuosi = 2020){
  d |> mutate(value = (value/mean(value[year(time) == vuosi])) * 100)
}

usa_bkt <-
  ptt_data_robo("fred/GDPC1") |>
  filter(time >= "2014-01-01") |>
  indeksoi() |>
  select(tiedot = series_id, time, value) |>
  mutate(tiedot = "USA")

suomi_bkt <-
  ptt_data_robo_l("StatFin/kan/ntp/statfin_ntp_pxt_132h.px") |>
  filter(
    taloustoimi == "B1GMH Bruttokansantuote markkinahintaan",
    tiedot == "Kausitasoitettu ja työpäiväkorjattu sarja, viitevuosi 2015, miljoonaa euroa",
    time >= "2014-01-01"
  ) |>
  indeksoi() |>
  select(tiedot, time, value) |>
  mutate(tiedot = "Suomi")

euroalue_bkt <-
  ptt_data_robo_l("eurostat/namq_10_gdp") |>
  filter(
    geo == "Euro area - 19 countries  (from 2015)",
    na_item == "Gross domestic product at market prices",
    s_adj == "Seasonally and calendar adjusted data",
    unit == "Chain linked volumes, index 2015=100",
    time >= "2014-01-01"
  ) |>
  indeksoi() |>
  select(tiedot = na_item, time, value) |>
  mutate(tiedot = "Euroalue")

yhdistetty_bkt_data <- rbind(usa_bkt, suomi_bkt, euroalue_bkt)

# apufunktio indeksoinnin laskemiseen
avg_value_2021 <- function(d, sarja){
  d |> 
    filter(tiedot == sarja) |> 
    filter(year(time) == 2021) |> 
    pull(value) |> mean()
}

#  Muokataan ennustedata.
bkt_vertailu_ennusteet <- ennuste_data |>
  filter(sarja_nmi %in% c("BKT")) |>
  mutate(across(matches("[0-9]{4}"), ~ as.double(.x))) |>
  pivot_longer(cols = matches("[0-9]{4}"), names_to = "year") |>
  select(year, sarja_nmi, value) |>
  group_by(sarja_nmi) |>
  slice_tail(n = 2)

#muokataan suomen BKT ennustedata indeksoituun muotoon
ennuste_indeksoitu_2022 <- bkt_vertailu_ennusteet |>
  filter(year == "2022") |> 
  mutate(value = avg_value_2021(yhdistetty_bkt_data, "Suomi") * (1 + value/100))
  
ennuste_indeksoitu_2023 <- bkt_vertailu_ennusteet |>
  filter(year == "2023")  |> 
  mutate(value = (ennuste_indeksoitu_2022$value * (1 + value/100)))

ennusteet_suomi_bkt <- rbind(ennuste_indeksoitu_2022, ennuste_indeksoitu_2023) |>
  mutate(sarja_nmi = "Suomi")

# luodaan kuvaaja käyttäen yhdistettyä bkt dataa sekä muodostettua ennustedataa
yhdistetty_bkt_data|>
  ptt_plot(
    grouping = tiedot,
    title = "Bruttokansantuote",
    subtitle = "Indeksi 2020 = 100",
    caption =  "Lähde: Tilastokeskus, BEA, Eurostat ja PTT",
    rangeslider = FALSE,
    ## rangeslider = "2015-01-01",
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "(indeksi 2020=100)", extra = ""),
    axis_limits = list(y = c(89, 113))
  ) |>
  ptt_plot_add_prediction(ennusteet_suomi_bkt, custom_pred_data = TRUE)

Vienti ja tuonti

ptt_data_robo_l("StatFin/kan/ntp/statfin_ntp_pxt_132h.px") |>
  filter(
    taloustoimi %in% c("P7R Tavaroiden ja palvelujen tuonti, tulona",
                       "P6K Tavaroiden ja palvelujen vienti, menona"),
    tiedot == "Kausitasoitetun ja työpäiväkorjatun sarjan volyymin muutos vuodentakaisesta, %",
    time >= "2014-01-01"
  ) |>
  mutate(
    tiedot = recode(taloustoimi,
                    "P7R Tavaroiden ja palvelujen tuonti, tulona" = "Tuonti",
                    "P6K Tavaroiden ja palvelujen vienti, menona" = "Vienti"
                    )
  ) |>
  ptt_plot(
    grouping = tiedot,
    title = "Vienti ja tuonti",
    subtitle = "%, volyymin vuosimuutos",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)

Kauppa- ja vaihtotase

ptt_data_robo_l("StatFin/kan/mata/kk/statfin_mata_pxt_12gf.px") |>
  filter(
    tiedot == "Tulojen ja menojen erotus (netto), miljoonaa euroa",
    maksutase_era %in% c("CA Vaihtotase", "G Tavarat"),
    time >= "2014-01-01"
  ) |>
  mutate(time = year(time)) |>
  with_groups(c(maksutase_era, time), filter, n() == 12) |>
  with_groups(c(maksutase_era, time), summarize, value = sum(value)/1000) |>
  mutate(
    time = make_date(time, 7),
    maksutase_era = recode(maksutase_era,
                           "CA Vaihtotase" = "Vaihtotase",
                           "G Tavarat" = "Kauppatase")
  ) |>
  ptt_plot(
    grouping = maksutase_era,
    title = "Vaihtotase ja kauppatase",
    subtitle = "Mrd. €",
    caption = "Tilastokeskus",
    rangeslider = F,
    axis_limits = list(x = c("2014-01-01","2021-12-30")),
    hovertext =  list(dateformat="Annual", rounding = 2, unit = "Mrd. €", extra = ""),
    plot_type = c("Vaihtotase" = "bar", "Kauppatase" = "scatter")
  )

Yksityinen kulutus

ptt_data_robo_l("StatFin/kan/ntp/statfin_ntp_pxt_132h.px") |>
  filter(
    taloustoimi == "P3KS14_S15 Yksityiset kulutusmenot, menona",
    tiedot == "Kausitasoitetun ja työpäiväkorjatun sarjan volyymin muutos vuodentakaisesta, %",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "Yksityinen kulutus") |>
  ptt_plot(
    grouping = tiedot,
    title = "Yksityinen kulutus",
    subtitle = "Vuosimuutos",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
      zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)
## p |> ptt_plot_create_widget()

Julkinen kulutus

ptt_data_robo_l("StatFin/kan/ntp/statfin_ntp_pxt_132h.px") |>
  filter(
    taloustoimi == "P3KS13 Julkiset kulutusmenot, menona",
    ## tiedot == "Kausitasoitetun ja työpäiväkorjatun sarjan volyymin muutos vuodentakaisesta, %",
    tiedot == "Trendisarjan volyymin muutos vuodentakaisesta, %",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "Julkinen kulutus") |>
  ptt_plot(
    grouping = tiedot,
    title = "Julkinen kulutus",
    subtitle = "Vuosimuutos",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)

Julkinen velka

ptt_data_robo_l("StatFin/jul/jyev/statfin_jyev_pxt_12sy.px") |>
  filter(
    time >= "2014-01-01",
    tiedot == "Julkisyhteisöjen EDP-velan BKT-suhde, %"
  ) |>
  mutate(tiedot = "Julkisen sektorin EDP-velan suhde BKT:hen") |>
  select(tiedot, time, value) |>
  ptt_plot(
    grouping = tiedot,
    title = "Julkisyhteisöjen velka",
    subtitle = "Velan suhde BKT:hen, %",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  )  |>
  plotly::layout(
    yaxis = list(range = c(55,75))
  )

Tulot ja kulutus

ptt_data_robo("StatFin/kan/vtp/statfin_vtp_pxt_11sf.px") |>
  filter(time >= "2014-01-01") |>
  filter(taloustoimi %in% c("B6NS14 Käytettävissä oleva tulo, kotitaloudet, netto",
                            "P31NCK Yksityiset kulutusmenot, menona"),
         tiedot == "Volyymin muutokset, %") |>
  mutate(taloustoimi = case_when(
    taloustoimi == "B6NS14 Käytettävissä oleva tulo, kotitaloudet, netto" ~ "Käytettävissä olevat tulot",
    taloustoimi == "P31NCK Yksityiset kulutusmenot, menona" ~ "Yksityinen kulutus"
  )) |>
  ptt_plot(
    grouping = taloustoimi,
    title = "Tulot ja kulutus",
    subtitle = "%-muutos, reaalinen",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  )

Julkisen sektorin tasapaino

ptt_data_robo_l("StatFin/jul/jali/statfin_jali_pxt_122g.px") |>
  filter(
    sektori %in% c(
      "S13 Julkisyhteisöt",
      "S1311 Valtionhallinto",
      "S1313 Paikallishallinto",
      "S1314 Sosiaaliturvarahastot"
    ),
    tiedot == "EDP-alijäämä (-) / EDP-ylijäämä (+), suhde BKT:hen, %",
    time >= "2013-01-01"
  ) |>
  mutate(sektori = recode(
    sektori,
    "S13 Julkisyhteisöt" = "Yhteensä",
    "S1311 Valtionhallinto" = "Valtio",
    "S1313 Paikallishallinto" = "Kunnat",
    "S1314 Sosiaaliturvarahastot" = "Sosiaaliturvarahastot"
  )) |>
  ptt_plot(
    grouping = sektori,
    title = "Julkisen sektorin tasapaino",
    subtitle = "Nettoluotonanto, % BKT:seen",
    caption =  "Lähde: Tilastokeskus ja PTT",
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  )

Investoinnit

ptt_data_robo_l("StatFin/kan/ntp/statfin_ntp_pxt_132h.px") |>
  filter(
    taloustoimi %in% c("P51K Kiinteän pääoman bruttomuodostus, menona",
                       "P51KXS13 Yksityiset investoinnit",
                       "P51KS13 Julkiset investoinnit"),
    tiedot == "Kausitasoitetun ja työpäiväkorjatun sarjan volyymin muutos vuodentakaisesta, %",
    time >= "2014-01-01"
  ) |>
  mutate(
    tiedot = recode(taloustoimi,
                    "P51K Kiinteän pääoman bruttomuodostus, menona" = "Investoinnit",
                    "P51KXS13 Yksityiset investoinnit" = "Yksityiset investoinnit",
                    "P51KS13 Julkiset investoinnit" = "Julkiset investoinnit"
                    )
  ) |>
  ptt_plot(
    grouping = tiedot,
    title = "Investoinnit",
    subtitle = "%, volyymin vuosimuutos",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)##  |>
## ptt_plot_create_widget("investoinnit")
ptt_data_robo_l("StatFin/kan/ntp/statfin_ntp_pxt_132h.px") |>
  filter(
    taloustoimi %in% c(
      "P51K Kiinteän pääoman bruttomuodostus, menona",
      "P51KN111+N112 Rakennusinvestoinnit",
      "P51KN113+N114 Kone-, laite- ja kuljetusvälineinvestoinnit: asejärjestelmät",
      "P51KN115+N117 Kasvatettavat varat ja henkiset omaisuustuotteet"
      ),
    tiedot == "Trendisarjan volyymin muutos vuodentakaisesta, %",
    time >= "2014-01-01"
  ) |>
  mutate(
    tiedot = recode(taloustoimi,
                    "P51K Kiinteän pääoman bruttomuodostus, menona" = "Yhteensä",
                    "P51KN111+N112 Rakennusinvestoinnit" = "Rakennus",
                    "P51KN113+N114 Kone-, laite- ja kuljetusvälineinvestoinnit: asejärjestelmät" = "Kone ja laite",
                    "P51KN115+N117 Kasvatettavat varat ja henkiset omaisuustuotteet" = "Muut (aineettomat)",
                    )
  ) |>
  ptt_plot(
    grouping = tiedot,
    title = "Investoinnit",
    subtitle = "%, muutos, trendi",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) ## |>
## ptt_plot_add_prediction(ennuste_data)## |> ## ptt_plot_create_widget("investoinnit")

Työllisyysaste

ptt_data_robo_l("StatFin/tym/tyti/kk/statfin_tyti_pxt_135z.px") |>
  filter(
    tiedot == "Työllisyysaste, 15-64-vuotiaat, %, trendi",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "Työllisyysaste") |>
  ptt_plot(
    grouping = tiedot,
    title = "Työllisyysaste",
    subtitle = "%, trendi",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)##  |>
## ptt_plot_create_widget("")

Työttömyysaste

ptt_data_robo_l("StatFin/tym/tyti/kk/statfin_tyti_pxt_135z.px") |>
  filter(
    tiedot == "Työttömyysaste, %, trendi",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "Työttömyysaste") |>
  ptt_plot(
    grouping = tiedot,
    title = "Työttömyysaste",
    subtitle = "%, trendi",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)##  |>
## ptt_plot_create_widget("")

Työvoima

ptt_data_robo_l("StatFin/tym/tyti/kk/statfin_tyti_pxt_135y.px") |>
  filter(
    tiedot == "Työvoima, 1000 henkilöä",
    time >= "2014-01-01",
    sukupuoli == "Yhteensä",
    ikaluokka == "15 - 74"
  ) |>
  mutate(tiedot = "Työvoima") |>
  ptt_plot(
    grouping = tiedot,
    title = "Työvoima",
    subtitle = "1000 henkilöä",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    hovertext =  list(rounding = 0, unit = "(1000 henkilöä)", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data, hovertext = list(rounding = 0,
        unit = "(1000 henkilöä)", extra = "(ennuste)"))  ##  |>
## ptt_plot_create_widget("")

Työlliset

ptt_data_robo_l("StatFin/tym/tyti/kk/statfin_tyti_pxt_135z.px") |>
  filter(
    tiedot == "Työlliset, 1000 henkilöä, trendi",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "Työlliset") |>
  ptt_plot(
    grouping = tiedot,
    title = "Työlliset",
    subtitle = "1000 henkilöä, trendi",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    hovertext =  list(rounding = 0, unit = "(1000 henkilöä)", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data, hovertext = list(rounding = 0,
        unit = "(1000 henkilöä)", extra = "(ennuste)"))

Työlliset ja työvoima


tyovoima <-
  ptt_data_robo_l("StatFin/tym/tyti/kk/statfin_tyti_pxt_135y.px") |>
  filter(
    tiedot == "Työvoima, 1000 henkilöä",
    time >= "2014-01-01",
    sukupuoli == "Yhteensä",
    ikaluokka == "15 - 74"
  ) |>
  mutate(tiedot = "Työvoima") |>
  select(tiedot, time, value)

# Lasketaan trendi työvoimalle
tyovoima <-
  tyovoima |>
  mutate(value = statfitools::trend_series(value, time = time))

tyolliset <-
  ptt_data_robo_l("StatFin/tym/tyti/kk/statfin_tyti_pxt_135z.px") |>
  filter(
    tiedot == "Työlliset, 1000 henkilöä, trendi",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "Työlliset")

# yhdistetään datasetit ja piirretään
rbind(tyovoima, tyolliset) |>
    mutate(value = value / 1000) |>
    ptt_plot(
    grouping = tiedot,
    title = "Työlliset ja työvoima",
    subtitle = "Miljoonaa, trendi",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 2, unit = "(miljoonaa henkilöä)", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data, hovertext = list(rounding = 2,
        unit = "(miljoonaa henkilöä)", extra = "(ennuste)"),
        value_multiplier = 0.001) |>
  plotly::layout(
    yaxis = list(range = c(2.2,3))
  )
# Ei palkansaajoja käytössä # palkansaajat <- ptt_data_robo_l("StatFin/tym/tyti/nj/statfin_tyti_pxt_137l.px") |> # filter( # tiedot == "Palkansaajat, 1000 henkilöä", # time >= "2014-01-01", # toimiala == "Yhteensä" # )

Työttömyys

# työttömyysaste, jolle ennuste
tyottomyysaste <- ptt_data_robo_l("StatFin/tym/tyti/kk/statfin_tyti_pxt_135z.px") |> # työttömyysaste
  filter(
    tiedot == "Työttömyysaste, %, trendi",
    time >= "2014-01-01"
  ) |>
  mutate(tiedot = "Työttömyysaste")

# tem työttömyysaste, lisäksi tehdään trendimuutos
tem_työttömyysaste <- ptt_data_robo_l("StatFin/tym/tyonv/kk/statfin_tyonv_pxt_12tf.px") |>
    filter(tiedot == "Työttömien työnhakijoiden %-osuus työvoimasta (%)",
           alue == "KOKO MAA",
           time >= "2014-01-01") |>
    mutate(tiedot = "Työttömyyysaste (TEM)") |>
    select(tiedot, time, value) |>
    mutate(value = statfitools::trend_series(value, time = time))

# yhdistetään datasarjat ja plotataan
rbind(tyottomyysaste, tem_työttömyysaste) |>
  ptt_plot(
    grouping = tiedot,
    title = "Työttömyysaste",
    subtitle = "%, trendi",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    zeroline = T,
    hovertext =  list(rounding = 1, unit = "%", extra = "")
  ) |>
  ptt_plot_add_prediction(ennuste_data)

Pitkät korot

ptt_data_robo_l("tidy/10yield") |>
  drop_na() |>
  filter(time >= "2008-01-01") |>
  select(maa, time, value) |> ## TODO bug in ptt_plot
  ptt_plot(
    grouping = maa,
    title = "Pitkät korot",
    subtitle = "%",
    caption =  "Lähde: Suomen Pankki, Deutche Bundesbank, Fed ja PTT",
    rangeslider = FALSE,
    hovertext = list(rounding = 2),
    zeroline = T
  )  |>
  ptt_plot_add_prediction(
     # tehdään ennustedatan halutuille sarjoille muunnos jotta vastaa maa -sarakkeen maita
     ennuste_data |>
       mutate(sarja_nmi = case_when(
          sarja_nmi == "10V USA" ~ "USA",
          sarja_nmi == "10v Saksa" ~ "Saksa",
          sarja_nmi == "10v Suomi" ~ "Suomi",
          TRUE ~ sarja_nmi
       )),
     value_multiplier = 100
  )

Raakaöljy

ptt_data_robo("fred/DCOILBRENTEU") |>
  drop_na() |>
  filter(time >= "2012-01-01") |>
  mutate(tieto = "Raakaöljy, Brent") |>
  ptt_plot(
    grouping = tieto,
    title = "Raakaöljy",
    subtitle = "$/barreli, Brent",
    caption =  "Lähde: Energy Information Administration ja PTT",
    rangeslider = FALSE,
    hovertext = list(rounding = 2),
    zeroline = T
  ) |>
  ptt_plot_add_prediction(
    ennuste_data
  )

Valuuttakurssi

ptt_data_robo("ecb/EXR", dl_filter = "D.USD.EUR.SP00.A") |>
  drop_na() |>
  filter(time >= "2012-01-01") |>
  mutate(tieto = "Euro/USD") |>
  ptt_plot(
    grouping = tieto,
    title = "Valuuttakurssi",
    subtitle = "Yhdysvaltain dollaria per euro",
    caption =  "Lähde: Euroopan keskuspankki ja PTT",
    rangeslider = FALSE,
    hovertext = list(rounding = 2, unit = "$/€")
  ) |>
  ptt_plot_add_prediction(
    ennuste_data
  )
#> No frequency attribute detected for hovertext time format, resorting to default %Y/%m/%d.

Kuluttajahintaindeksi

cpi_es <-
  ptt_data_robo("eurostat/prc_hicp_manr", geo_labels = "fi") |>
  filter(
    geo %in% c("Suomi", "EA"),
    coicop == "All-items HICP"
  ) |>
  mutate(geo = recode(geo, EA = "Euroalue")) |>
  select(geo, time, value)

cpi_us <-
  ptt_data_robo("fred/CPIAUCSL", units = "pc1") |>
  mutate(geo = "USA") |>
  select(geo, time, value)

bind_rows(cpi_es, cpi_us) |>
  filter(time >= "2013-01-01") |>
  mutate(geo = fct_relevel(geo, "Suomi", "Euroalue", "USA")) |>
  ptt_plot(
    grouping = geo,
    title = "Kuluttajahinnat",
    subtitle = "%-muutos",
    caption =  "Lähde: Tilastokeskus, Eurostat, BLS ja PTT",
    rangeslider = FALSE,
    hovertext = list(rounding = 1),
    zeroline = T
  ) ## |>
## ptt_plot_add_prediction( ## ennuste_data ## )

Ansiotasoindeksi

Huom. reaalinen ansiotasoindeksi poikkeaa hieman edellisen ennusteen kalvosarjan kuviosta. Tarkista onko deflaattori ja indeksikaava sama. Tässä on käytetty kansallista kuluttajahintaindeksiä.


khi_q <-
  ptt_data_robo("StatFin/hin/khi/kk/statfin_khi_pxt_11xd.px") |>
  filter(
    hyodyke == "0 KULUTTAJAHINTAINDEKSI",
    tiedot == "Pisteluku"
  ) |>
  mutate(time = floor_date(time, "quarter")) |>
  with_groups(time, summarize, khi = mean(value))

ptt_data_robo("StatFin/pal/ati/nj/statfin_ati_pxt_11zt.px") |>
  inner_join(khi_q, by = "time") |>
  transmute(time, Nimellinen = value, Reaalinen = value/khi) |>
  pivot_longer(c(Nimellinen, Reaalinen), names_to = "tieto")|>
  with_groups(tieto, mutate, value = 100 * (value/lag(value, 4, order_by = time) - 1)) |>
  filter(time >= "2013-01-01") |>
  ptt_plot(
    grouping = tieto,
    title = "Ansiotasoindeksi",
    subtitle = "%, vuosimuutos",
    caption =  "Lähde: Tilastokeskus ja PTT",
    rangeslider = FALSE,
    hovertext = list(rounding = 1),
    zeroline = T
  ) ## |>
#> No frequency attribute detected for hovertext time format, resorting to default %Y/%m/%d.
## ptt_plot_add_prediction( ## ennuste_data ## )